001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Apr 9, 2003
005 * Time: 4:30:17 PM
006 */
007
008 package EVolve;
009
010 import EVolve.data.DataManager;
011 import EVolve.data.DataSource;
012
013 import java.util.*;
014
015 public class DataSourceManager {
016 private ArrayList dataManagerList;
017 private ArrayList filterList;
018 private int currentDataSource;
019 private DataManager currentDataManager;
020 private Filter currentFilter;
021
022 public DataSourceManager(ArrayList dsList) {
023 dataManagerList = new ArrayList();
024 for (int i=0; i<dsList.size(); i++) {
025 DataSource dataSource = (DataSource)dsList.get(i);
026 dataManagerList.add(new DataManager(dataSource));
027 }
028 filterList = new ArrayList();
029 currentDataSource = -1;
030 }
031
032 public void init() {
033 for (int i=0; i<dataManagerList.size(); i++) {
034 filterList.add(new Filter());
035 }
036 switchDataSource(0);
037 }
038
039 public int getCurrentDataSourceId() {
040 return currentDataSource;
041 }
042
043 public void switchDataSource(int selectedDataSourceIndex) {
044 if (currentDataSource == selectedDataSourceIndex) return;
045
046 currentDataSource = selectedDataSourceIndex;
047 currentDataManager = (DataManager)dataManagerList.get(selectedDataSourceIndex);
048 currentFilter = (Filter)filterList.get(selectedDataSourceIndex);
049 Scene.selectDataSource(currentDataManager, currentFilter);
050 }
051
052 public ArrayList getDataManagerList() {
053 return dataManagerList;
054 }
055
056 public void addDataSource(String name) {
057 Object dsource = EVolve.Main.instanciateFromName(name);
058
059 if (dsource == null) {
060 Scene.showErrorMessage("EVolve failed to instanciate data source: \"" + name + "\"");
061 } else if (dsource instanceof DataSource) {
062 dataManagerList.add(new DataManager((DataSource)dsource));
063 filterList.add(new Filter());
064 } else {
065 Scene.showErrorMessage("EVolve> \"" + name + "\" is not a DataSource");
066 }
067
068 }
069
070 public String getUsedDataSourceName(int dataSourceId) {
071 DataManager dm = (DataManager)dataManagerList.get(dataSourceId);
072 return dm.getDatasourceName();
073 }
074
075 public String getCurrentDataSourceName() {
076 return currentDataManager.getDatasourceName();
077 }
078
079 public DataManager getDataManager(int index) {
080 if (index >= dataManagerList.size()) return null;
081
082 return (DataManager)dataManagerList.get(index);
083 }
084 }